package com.taotao.web.service;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.taotao.common.service.ApiService;

@Service
public class IndexService {
	private ObjectMapper mapper = new ObjectMapper();	
	@Autowired
	private ApiService apiService;
	
	 // 从配置文件中读取后台服务器的地址
    @Value("${MANAGE_TAOTAO_BASE_URL}")
    private String MANAGE_TAOTAO_BASE_URL;
    // 从配置文件中读取广告1的资源路径
    @Value("${INDEXAD1_PATH}")
    private String INDEXAD1_PATH;
    // 从配置文件中读取广告2的资源路径
    @Value("${INDEXAD2_PATH}")
    private String INDEXAD2_PATH;

	public String queryIndexAd1() {
		 try {
	            // 准备URL地址
	            String url = MANAGE_TAOTAO_BASE_URL + INDEXAD1_PATH;
	            // 查询后台接口，获取json格式数据
	            String content = this.apiService.doGet(url);
	            // 解析JSON数据
	            JsonNode jsonNode = mapper.readTree(content);
	            // 获取rows数据
	            ArrayNode rows = (ArrayNode) jsonNode.get("rows");
	            
	            // 准备一个集合，用来封装最后的结果
	            List<Map<String,Object>> result = new ArrayList<>();
	            // 遍历,取出每一条大广告数据
	            for (JsonNode row : rows) {
	                Map<String,Object> map = new LinkedHashMap<>();
	                // 封装页面所需数据
	                map.put("srcB", row.get("pic").asText());
	                map.put("height", 240);
	                map.put("alt", row.get("title").asText());
	                map.put("width", 670);
	                map.put("src", map.get("srcB"));
	                map.put("widthB", 550);
	                map.put("href", row.get("url").asText());
	                map.put("heightB", 240);
	                result.add(map);
	            }
	            return mapper.writeValueAsString(result);
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        //TODO 一旦没有查到数据，或者数据为空，或者抛出异常，给出一个默认的广告数据。
	        return null;
	    }

	public String queryIndexAd2() {
		 try {
	            // 准备URL地址
	            String url = MANAGE_TAOTAO_BASE_URL + INDEXAD2_PATH;
	            // 查询后台接口，获取json格式数据
	            String content = this.apiService.doGet(url);
	            // 解析JSON数据
	            JsonNode jsonNode = mapper.readTree(content);
	            // 获取rows数据
	            ArrayNode rows = (ArrayNode) jsonNode.get("rows");
	            
	            // 准备一个集合，用来封装最后的结果
	            List<Map<String,Object>> result = new ArrayList<>();
	            // 遍历,取出每一条大广告数据
	            for (JsonNode row : rows) {
	                Map<String,Object> map = new LinkedHashMap<>();
	                /*
	                 *  {
	                "width": 310,
	                "height": 70,
	                "src": "/images/5440ce68Na00d019e.jpg",
	                "href": "http://c.fa.jd.com/adclick?sid=2&cid=601&aid=3614&bid=4196&unit=35984&advid=109277&guv=&url=http://sale.jd.com/mall/FQLUNlG53wbX7m.html",
	                "alt": "",
	                "widthB": 210,
	                "heightB": 70,
	                "srcB": "http://img14.360buyimg.com/da/jfs/t334/155/1756719493/14371/e367c503/5440ce6dNd056ce39.jpg"
	            }
	                 */
	                // 封装页面所需数据
	                map.put("width", 310);
	                map.put("height", 70);
	                map.put("src", row.get("pic").asText());
	                map.put("href", row.get("url").asText());
	                map.put("alt", row.get("title").asText());
	                map.put("widthB", 210);
	                map.put("heightB", 70);
	                map.put("srcB", row.get("pic").asText());
	                result.add(map);
	            }
	            return mapper.writeValueAsString(result);
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        //TODO 一旦没有查到数据，或者数据为空，或者抛出异常，给出一个默认的广告数据。
	        return null;
	    }


}
